ИзФайла.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
                           ОТДЕЛ ИзФайла+;
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(* НАЗНАЧЕНИЕ: пример упорядочивания чисел из внешнего файла быстрым обменом  *)
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ИСПОЛЬЗУЕТ 
  ОбменомБ,
  Параметр ИЗ "...\Отделы\Обмен\",
  Читать   ИЗ "...\Отделы\Обмен\",
  Писать   ИЗ "...\Отделы\Обмен\",
  Вывод    ИЗ "...\Отделы\Обмен\";

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ);
УКАЗ
  Вывод.Цепь(ц);
  Вывод.Цепь("^Вызов:^ИзФайла.exe имяВходногоФайла имяВыходногоФайла");
  СТОП(1)
КОН Ошибка1;

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ);
УКАЗ
  Вывод.Цепь(ц1);
  Ошибка1(ц2)
КОН Ошибка2;

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Упорядочивание;
ПЕР
  ряд:ДОСТУП К РЯД ИЗ ЦЕЛ;   (* обрабатываемый ряд *)
  потокЧтения:Читать.Поток; (* поток для входного неупорядоченного ряда чисел *)
  потокЗаписи:Писать.Поток; (* поток для выходного упорядоченного ряда чисел *)
  чисел:ЦЕЛ;                (* чисел во входном файле *)
  имяФайла:ЦЕПЬ[100];
  число:ЦЕЛ;
УКАЗ
             (* проверка параметров приложения *)
  ЕСЛИ Параметр.всего <= 1 ТО Ошибка1("Нет имени входного файла.") КОН;
  ЕСЛИ Параметр.всего <= 2 ТО Ошибка1("Нет имени выходного файла.") КОН;
             (* подсчёт чисел во входном файле *)
  Параметр.Текст(1,имяФайла);
  потокЧтения:=Читать.Открыть(имяФайла);
  ЕСЛИ потокЧтения = ПУСТО ТО
    Ошибка2(имяФайла," не найден.")
  КОН;
  потокЧтения.видЗнаков:=Читать.знУни;
  чисел:=0;
  ПОКА НЕ Читать.Конец(потокЧтения) ВЫП
    число:=Читать.Цел(потокЧтения);
    УВЕЛИЧИТЬ(чисел)
  КОН;
  Читать.Закрыть(потокЧтения);
             (* распределение памяти под ряд чисел *)
  СОЗДАТЬ(ряд,чисел);
             (* чтение ряда *)
  Параметр.Текст(1,имяФайла);
  потокЧтения:=Читать.Открыть(имяФайла);
  потокЧтения.видЗнаков:=Читать.знУни;
  ОТ число:=0 ДО чисел-1 ВЫП
    ряд[число]:=Читать.Цел(потокЧтения)
  КОН;
  Читать.Закрыть(потокЧтения);
             (* упорядочивание ряда быстрым обменом *)
  ОбменомБ.Упорядочить(ряд^);
             (* запись ряда *)
  Параметр.Текст(2,имяФайла);
  потокЗаписи:=Писать.Открыть(имяФайла);
  ЕСЛИ потокЗаписи = ПУСТО ТО
    Ошибка2(имяФайла," не открывается.")
  КОН;
  потокЗаписи.видЗнаков:=Писать.знУни;
  ОТ число:=0 ДО чисел-1 ВЫП
    Писать.ЧЦел(потокЗаписи,"%d^",ряд[число],0,0,0)
  КОН;
  Писать.Закрыть(потокЗаписи)
КОН Упорядочивание;

(*────────────────────────────────────────────────────────────────────────────*)
УКАЗ
  Упорядочивание
КОН ИзФайла.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы